
; ED405.FIX		ED405.ASM dated 1984 May 

; This file is an overlay to EDFILE.COM which provides modifications.
; Since EDFILE is a particularly popular public domain program and
; since more fixes and modifications are sure to follow, this patch
; will be referred to by its date...4 for 1984 and 05 for May.

; This patch by Clint Lew, Russell Gaspari and Dan Taylor
; South Bay Technical Support Group RCP/M (213) 970-9238

; === PART 1...patch to allow use of hex addresses


     ; EDFILE as originally written jumps to addresses in decimal, 
     ; and only jumps to hex addresses if entry is followed by "H".

     ; For example, Address? 23C9 is interpreted as decimal
     ;                       23C9H is interpreted as hex

     ; If you wish all addresses to be input in hex (as in DDT) 
     ; then make the following patch modification to EDFILE.COM.

     ;    Address   old contents   new contents
     ;      1C62        0A              10

 	ORG	1C62H
	DB	10H

; === PART 2...patch to provide use of function keys


	ORG	2AC5H
      ;	LXI	H,2AB4H		;replace this
	LXI	H,KEY		;with end of orig program

JOUT:	EQU	2AB4H


	ORG	2C00H		;orig version ended here

KEY:	CPI	80H		;see if bit 8 set
	CNC	KEYFN		;if so, call the subroutine
	JMP	JOUT		;return to EDFILE.COM

KEYFN:				;subroutine to replace fn keys
	MOV	D,A		;save the char for future use
	LXI	H,KEYTABL	;prepare to search table
KEYFN1:				;start the search
	MOV	A,D		;retrieve for KEYFN3 return
	CMP	M		;compare the char to the table
	JZ	KEYFN4		;if match go make exchange
KEYFN2:				;no match so continue search
	INX	H		;next byte in the table
	MOV	A,M		;move it in for inspection
	CPI	0FFH		;because FF marks end of table
	JNZ	KEYFN3		;if not end continue search
	MVI	A,0		;no more char in table so...
	RET			;return a zero
KEYFN3:				;keep searching
	CPI	80H		;bytes below 80 are replacements
	JC	KEYFN2		;jump past replacement bytes
	JMP	KEYFN1		;compare the function key bytes
KEYFN4:				;substitution
	INX	H		;the substitution is the byte 
	MOV	A,M		;....after the match
	RET			;....so return with it
KEYTABL:			;my function key replacement table
	DB	82H,0BH		;if  up-arrow    send a ^K
	DB	86H,0CH		;if  right-arrow send  ^L
	DB	88H,08H		;if  left-arrow  send  ^H
	DB	8AH,0AH		;if  down-arrow  send  ^J
	DB	0DBH,42H	;if  key F1      send  B
	DB	0E9h,5AH	;if  key F15     send  Z
	DB	0FFH		;important -- marks end of table
;
	END			;this will be the new end address
				;... of EDFILE.COM 


;*************************************************************
;    General usage instructions for using ASM overlays 
;*************************************************************

;               I N S T R U C T I O N S
;
;
; First, edit this file to your preferences using any editor.
; Wordstar in non-document mode works very well for this.
;
; Second, assemble this file using Digital Research's CP/M
; assembler ASM.COM.  For the file ED405.ASM,  enter ASM ED405.
;
; Lastly, use DDT to overlay the results of this EDOVR program 
; onto EDFILE.COM.  The procedure for this overlay follows:
;
;		A>DDT EDFILE.COM
;		DDT VERS 2.2
;		NEXT  PC
;		2C00 0100		(size varies with version)
;		-IED405.HEX		(note the "I" command)
;		-R			("R" loads in the .HEX file)
;		NEXT  PC
;		2C80 0000
;		-G0			(return to CP/M)
;		A>SAVE 44 EDFILE.COM	(now have a modified .COM file)
;
; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
